/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import dao.PacienteDaoLocal;
import entities.Paciente;
import exception.PacienteExistsException;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;

/**
 *
* @author Sostenes, Thiago, Felipe
 */
@Stateless
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public class PacienteController implements PacienteControllerLocal {

    @EJB
    private PacienteDaoLocal pacienteDao;

    @Override
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void persist(Paciente paciente) throws PacienteExistsException {
        if (pacienteDao.exists(paciente)) {
            throw new PacienteExistsException(paciente);
        }
        pacienteDao.create(paciente);
    }

    @Override
    public List<Paciente> list() {
        return pacienteDao.list();
    }

    @Override
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void remove(Paciente paciente) {
        pacienteDao.remove(paciente);
    }

    @Override
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void update(Paciente paciente) {
        pacienteDao.update(paciente);
    }

    @Override
    public Paciente createPaciente() {
        return new Paciente();
    }
}
